Efficient spreader for spread spectrum communication systems

ABSTRACT

A spreading system and method for CDMA applications that requires fewer integer multiplications. User data is spread using real or complex integer based spreading codes of length SF to SF max  chips. At least one of the codes is of the form j n ·v[n] where v[n] is a spreading code. The invention provides increased user separation using a plurality of spreading codes.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application a continuation of U.S. patent application Ser. No.11/114,397, filed Apr. 26, 2005, which is a continuation of U.S. patentapplication Ser. No. 09/810,596, filed Mar. 16, 2001, now U.S. Pat. No.6,885,692, issued Apr. 26, 2005 which claims the benefit of U.S.Provisional Patent Application No. 60/191,884, filed Mar. 23, 2000,which are incorporated by reference as if fully set forth.

BACKGROUND

The present invention relates generally to digital communicationsystems. More specifically, the invention relates to a system and methodfor spreading a data signal for spread spectrum communications.

A communication system typically transmits information or data using acontinuous frequency carrier with modulation techniques that vary itsamplitude, frequency or phase. The information to be transmitted ismapped onto a predetermined constellation that defines symbols and istransmitted over a communication medium. The communication medium may beguided or unguided, (comprising copper, optical fiber or air) and iscommonly referred to as the communication channel.

Deployed communication systems rarely are single access. A prior artmultiple-access communication system is shown in FIG. 1. Protocols suchas time division multiple access (TDMA), carrier sense multiple access(CSMA), code division multiple access (CDMA) and frequency relatedprotocols such as frequency division multiple access (FDMA) andorthogonal frequency division multiplexing (OFDM) allow a plurality ofusers to access the same communication media to transmit or receiveinformation. These techniques can be mixed together creating hybridvarieties of multiple-access communication schemes such as time divisionduplex (TDD). The access protocol specified by a communication system istypically executed after the data undergoes modulation.

Prior art modulation techniques that are in use are frequency modulation(FM), frequency shift keying (FSK), phase shift keying (PSK), binaryphase shift keying (BPSK) and differential phase shift keying (DPSK).The most commonly used high-speed methods for data modulation arequadrature amplitude modulation (QAM) and quadrature phase shift keying(QPSK). These techniques vary a predefined carrier frequency amplitudeand phase according to an input signal to transmit multiple bits perbaud thereby using available bandwidth more efficiently.

To extend the possible range of data signal values, quadraturemodulation assigns a symbol to represent more than two binary values.The use of a symbol allows for a greater degree of transmittedinformation since the bit content of each symbol dictates a unique pulseshape. Symbols, which consist of x bits per sample, may represent aquantized version of an analog sample or digital data. Depending uponthe number of symbols used, an equal number of unique pulseshapes orwaveshapes exist. The number of data bits determine the combinations ofamplitude and phase that define a constellation pattern.

Quadrature modulation is based on two distinct waveforms that areorthogonal to each other. If two waveforms are transmittedsimultaneously and do not interfere with each other, they areorthogonal. Quadrature modulation modulates two different signals intothe same bandwidth creating a two-dimensional signal space as shown inFIG. 2. Two waveforms generally used for quadrature modulation are sineand cosine waveforms at the same frequency. The waveforms are definedas:s ₁(t)=A cos(2πf _(c) t)   (1)and;s ₂(t)=A sin(2πf _(c) t)   (2)where f_(c) is the carrier frequency of the modulated signal and A isthe amplitude applied to both signals. By convention, the cosine carrieris called the in-phase (I), real component of the signal and the sinecarrier is the quadrature (Q), imaginary component of the signal. Linearcombinations of the form a₁ cos(2πf_(c)t)+a₂ sin(2πf_(c)t), (where a₁and a2 are real numbers), generated from the two basic waveforms definesymbols in the modulation alphabet. The symbols can be represented ascomplex numbers, a₁+ja₂, where j is defined as j=z√{square root over(−1)}.

A QAM symbol consists of at least one sample from both the in-phase Iand quadrature Q signals. Signal amplitude is indicated by the distancefrom the origin; phase by the angular distance around the unit circle.After the data is assembled as symbols, the symbols are processed inaccordance with an access protocol chosen for the communication system.

A prior art CDMA communication system is shown in FIG. 3. CDMA is acommunication technique in which data is transmitted with a broadenedband (spread spectrum) by modulating the data to be transmitted with apseudo-noise sequence. The data signal to be transmitted may have abandwidth of only a few thousand Hertz distributed over a frequency bandthat may be several million Hertz. The communication channel is usedsimultaneously by k independent subchannels. For each subchannel k, allother subchannels appear as interference.

As shown, a single subchannel of a given bandwidth is mixed with aunique spreading code which repeats a predetermined pattern generated bya wide bandwidth, pseudo-noise (pn) sequence generator. These uniqueuser spreading codes are typically pseudo-orthogonal to one another suchthat the cross-correlation between the spreading codes is close to zero.The spreading codes in a CDMA system are chosen to minimize interferencebetween a desired subchannel and all other subchannels. A data signal ismultiplied with the pn-sequence to spread the data signal and produce adigital spread spectrum signal. A carrier signal is modulated with thedigital spread spectrum signal and transmitted on the communicationchannel. A receiver demodulates the transmission to extract the digitalspread spectrum signal. The transmitted data is reproduced aftercorrelation with the matching pn sequence. When the spreading codes areorthogonal with one another, the received signal can be correlated witha particular user signal related to a particular spreading code suchthat only the desired user signal related to the particular spreadingcode is enhanced, while the other signals for all other users are notenhanced.

Each element of the spreading code is known as a chip and belongs to theset {1, −1}. The chip frequency or rate is the same or faster than thedata rate. The ratio between the chip rate and the subchannel data rateis referred to as the spreading factor and is equal to the number ofchips that are used to spread one symbol of user data. The number ofchips is divisible by the largest spreading factor allowed. The largerthe spreading factor, the more resistant a symbol is to noise andinterference. For the case of synchronous CDMA, a symbol from the userwith the largest spreading factor may constitute an entire block ofdata.

CDMA is one access protocol called for in the proposed 3^(rd) generationwireless communication standards. Shown in FIG. 4 is a systemarchitecture of a CDMA spreader making use of variable spreadingfactors. Variable spreading factors allow a transmitter to fine tuneoverall system processing gain. Higher data rate users are assignedspreading codes having a lower spreading factor at the expense ofreduced processing gain. Lower data rate users are assigned spreadingcodes having a higher spreading factor. Therefore, the overall bandwidthof the spread signal of all users is maintained to be the same.

To reduce the overall number of spreading codes for each user in a givencommunication system, different spreading codes are used for cellseparation and user separation, resulting in a two-part spreadingoperation for each subchannel. Channelization codes are used for userseparation and scrambling codes for cell separation. Although a two-partspreading operation is characteristic of cellular CDMA systems, a singlespreading operation may be used in other applications. Here, thechannelization and scrambling codes are replaced by a single code thatseparates each user.

To effect the spreading operation of k subchannel users in a physicalsystem, linear spreading methods are executed as fixed gate arrays,microprocessors, digital signal processors (DSPs), application specificintegrated circuits (ASICs) and the like. Fixed logic systems allow forgreater system speed while microprocessor driven systems offerprogramming flexibility. Either implementation that is responsible forperforming the spreading functions perform a sequence of mathematicaloperations. The following variables typically define the structure andoperation of a spreader:

-   -   c=the real integer channelization spreading code presented as a        vector for subchannel k corresponding with a given spreading        factor SF. The length of the channelization code c varies with        different spreading factors SF.    -   d=the data transmitted in a subchannel k.    -   d=the data in a subchannel k after modulation. The data is        presented in the form of a vector, where a vector is an array of        data indexed by a single index variable. For the purposes of        vector operations which follow, all vectors are defined as        column vectors.    -   k=one subchannel, (k=1, 2, 3, . . . K).    -   N=the number of data symbols in a group of the k^(th)        subchannel, (N=SF_(max)/SF). For the case of synchronous CDMA, a        symbol from the user with the largest spreading factor may        constitute an entire block of data. Each subchannel k has its        own group size N where N can equal 1 (for SF=SF_(max)) to        SF_(max)/SF_(min).    -   i=the i^(th) symbol of data d, (i=1, 2, 3, . . . N).    -   n=the element reference of a vector, ([n]).    -   SF=the spreading factor of subchannel k.    -   SF_(min)=the minimum spreading factor of the communication        system.    -   SF_(max)=the maximum spreading factor of the communication        system.    -   v=the real, integer part of the scrambling code.    -   {tilde over (v)}=the complex scrambling code presented as a        vector of length SF_(max). {tilde over (v)}[n]=j^(n)·v[n], where        n=1 . . . SF_(max). Note that v[n] & {tilde over (v)}[n]        reference the n^(th) element of the vectors v & {tilde over        (v)}. Thus, {tilde over (v)}[n]=j^(n)·v[n] defines the rule for        deriving the n^(th) element of {tilde over (v)} from the n^(th)        element of v.    -   z _(i)=the final spread chip sequence resulting from the        application of the channelization and scrambling codes on the        i^(th) symbol of subchannel k.        z_(i)[n]=d_(i)·c[n]·j^(SF(i−1)+n)·v[SF(i+1)+n], where n=1 . . .        SF. z _(i) is SF chips long; the spreading factor chosen for        that particular subchannel k. N such SF long z _(i) form z of        length SF_(max).

To simplify the description that follows, a two-part, prior art spreaderfor a k^(th) subchannel is discussed. One skilled in this artappreciates that a plurality of k spread subchannels can be summed asshown in FIG. 4. After data has been modulated, where data d ofsubchannel k is assembled as symbols defining a predeterminedconstellation, a sequence of complex data symbols d is divided intogroups containing N symbols each, defined by: $\begin{matrix}{N = {\frac{{SF}_{\max}}{SF}.}} & (3)\end{matrix}$Each complex data symbol d within a group of N symbols is spread by areal integer channelization code c of length SF chips. Thechannelization code c is unique to a user k. All N channelization code cspread symbols d of the group N are concatenated.

The resulting spread symbol sequence SF_(max) chips long is multipliedby a complex scrambling code {tilde over (v)} of length SF_(max) toproduce a final chip sequence z of length SF_(max). The scrambling code{tilde over (v)} is derived from a real integer scrambling code υmultiplied with a complex operator j^(n). The relation is:{tilde over (v)}[n]=j^(n) A v[n], where n=1 . . . SF_(max).   (4)

The result of the two-part spreading process is a vector z of lengthSF_(max) chips. This vector {tilde over (z)} can be expressed as aconcatenation of N subvectors, {tilde over (z)}_(i), where i=1, 2, 3, .. . N, where z _(i) is defined as the segment of length SF chips withinz that represents the contribution of subchannel k's i^(th) spreadsymbol, d_(i), in the group. The n^(th) element of z _(i) is given by:z _(i) [n]=d _(i) ·c[n]·j ^(SF(i−1)+n) ·v[SF(i+1)+n], where n=1, . . .SF and i=1, 2, 3,   (5)v[SF(i+1)+n], where n=1, . . . SF, defines a different set of SFelements of v, starting with the (SF(i−1)+1)^(th) element depending uponi.

Implementing the two-code spreading operation defined by Equation 5would require 8(N)(SF) integer multiplications to spread a symbolsequence d of length N symbols for one subchannel k. 2(SF)multiplications are required for the d_(i) A c[n] (where n=1, . . . SF)product (for one symbol) and 2(SF) multiplications are required for thej^(SF(i−1)+n)·v[n] product (for one symbol) (where n=1, . . . SF) sinced_(i) and j^(n) are complex numbers multiplied with real numbers. Sinceboth intermediate products are complex, the partial productmultiplication requires four operations per symbol yielding a total of8(N)(SF) multiplications.

In order to conserve power for operation in a mobile/portablecommunication system while increasing data throughput, an efficientprocess is needed to implement multiple code spreading operations.

SUMMARY

The present invention is a spreading system and method for CDMAapplications that requires fewer integer multiplications. User data isspread using real or complex integer-based spreading codes of length SFto SF_(max) chips. At least one of the codes is of the form j^(n)·v[n]where v[n] is a spreading code. The invention provides increased userseparation using a plurality of spreading codes.

Accordingly, it is an object of the invention to provide a less complexsystem and method for spreading a data signal using more than onespreading code

Other objects and advantages of the system and method will becomeapparent to those skilled in the art after reading a detaileddescription of the preferred embodiment.

BRIEF DESCRIPTION OF THE DRAWING(S)

FIG. 1 is a simplified block diagram of a prior art multiple accesscommunication system.

FIG. 2 is a plot of a quadrature signal space.

FIG. 3 is a simplified block diagram of a prior art CDMA communicationsystem.

FIG. 4 is a system architecture of a prior art two-part spreader.

FIG. 5 is a system architecture of the present invention.

FIGS. 6 a-d are control flow diagrams of the method of the presentinvention.

FIGS. 7 a-d is a data flow diagram of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT(S)

The present invention will be described with reference to the drawingfigures where like numerals represent like elements throughout.

Shown in FIG. 5 is a system diagram of the spreader 17 of presentinvention for use in communication systems employing CDMA. The spreader17 comprises a plurality of processors having collateral memory whichperform various vector and matrix operations. Alternate physicalembodiments of the invention include fixed gate arrays, ASICs, DSPs andthe like performing the equivalent functions of the various processors.As one skilled in this art recognizes, optimization techniques tailoredfor each physical embodiment may vary when implementing the spreader 17.The spreader 17 also comprises a plurality of data inputs d⁽¹⁾ . . .d^((k)) for inputting modulated user data d of subchannel k and anoutput z ^((G)) for outputting a combined spread spectrum signal in theform of an output vector.

To simplify the explanation of the present invention that follows, onlyone subchannel k spreading operation will be described, therebyeliminating the need for unique subchannel identification throughout.Each data input d⁽¹⁾ . . . d^((k)) may have from one to a plurality ofchannelization codes and from one to a plurality of scrambling codesassigned depending upon the degree of user and cell separation. Theterms channelization and scrambling are arbitrary and represent aplurality of spreading codes that vary in length depending upon theassigned spreading factor SF of a subchannel k and the requirements of acommunication system. At least one assigned spreading code for eachsubchannel k must be exclusive to all other codes in the communicationsystem to maintain subchannel separation for each user.

Each assigned code must have the same length, either as a periodic shortcode assembly or a code having the maximum spreading factor SF_(max)length. Alternative embodiments of the spreader 17 result from thenumber of codes assigned for a subchannel k. A plurality of spreaders 17may be deployed in transmitters for a communication system.

The spreader 17 spreads the data symbols of subchannel k using aplurality of channelization and scrambling codes. These codes may be allreal, all complex or some may be real while others may be complex. Thespreader 17 comprises an intermediate code generator 21, a group Nprocessor 19, a phaser adjustor 23, a rotator 25, two multipliers 27 rand 27 i and a summer 29.

Recall that length of a code is equal to its spreading factor SF. Theintermediate code generator 21 concatenates N periods of each real codeof spreading factor SF. It also concatenates N periods of the real partof each complex code of spreading factor SF. Thus each code of spreadingfactor SF yields a long code of length SF_(max). It then multiplies allof these long codes via an element-by-element multiplication of theresulting vector with all real codes of spreading factor SF_(max) andthe real part of all complex codes of length SF_(max). This results inthe final output of the intermediate code generator 21, which is asingle real code of length SF_(max).

The group N processor 19 determines the group size N as the ratio SF_(max), and then SF assembles a group of N symbols. The spreader 17spreads one such group at a time.

The phase adjuster 23, imparts an initial phase to each of the N symbolsin the group assembled by the group N processor 19. The phase impartedto a symbol is a function of the position of the symbol within itsgroup. Thus, the output of the phase adjustor 23 is a group of N symbolswhere each symbol has been given a specific phase rotation.

The rotator 25 accounts for the complex codes by forming a sequence oflength SF corresponding to each of these symbols in the group of Nsymbols obtained from the output of the phase adjustor 23. It does so byrotating each phase-adjusted symbol SF times, with the degree ofrotation being a function of the total number of complex codes in thesystem. Then, the N such complex sequences corresponding to each of theN symbols in the group are concatenated to form a single complexsequence of length N·SF=SF_(max), which forms the final output of therotator 25.

The complex sequence output of the rotator 25 is multiplied,element-by-element, with the intermediate code generator 21 output. Thismultiplication is accomplished via the multipliers 27 r and 27 i. Themultipliers 27 r and 27 i multiply the real intermediate code with thereal and imaginary parts, respectively, of the complex sequence outputof the rotator 25.

The output of the multipliers 27 r and 27 i is the final spread sequenceof the group of N symbols of a subchannel. The summer 29 adds the finalspread sequence of all subchannels to form a single sequence output ofthe spreader 17.

Since channelization codes are employed for user separation andscrambling codes are employed for cell separation, the channelizationcode and scrambling codes are known a priori according to cell locationand are transmitted to a respective user from a cell base station via alearning transmission. The learning transmission is beyond the scope ofthis disclosure. M channelization codes are available for use, {tildeover (c)} _(i) . . . {tilde over (c)} _(M) ₁ ,c _(M1+1) . . . c_(M) ofwhich the first M₁ are complex and the remaining are real. The n^(th)element of the i^(th) complex channelization code is defined as:{tilde over (c)} _(i) [n]=j ^(n) ·c _(i) [n], where n=1, . . . SF andwhere c _(i) is real.   (6)The subchannel k also can utilize P scrambling codes, {tilde over (v)} ₁. . . {tilde over (v)}_(P) ₁ ,v _(P) _(i+1) . . . v _(P) of which thefirst P₁ are complex and the remaining are real. The n^(th) element ofthe i^(th) complex scrambling code is defined as:{tilde over (v)} _(i) [n]=j ^(n) ·v _(i) [n], where n=1, . . . SF _(max)and where v _(i) is real.   (7)

Referring to the flow diagram of the method 97 of the present inventionshown on FIGS. 6 a-d, data d which has undergone modulation andcomprises a series of data symbols is input into the spreader 17. Asymbol group size N for subchannel k is determined by the group Nprocessor 19 using Equation 3 (step 99). Since different channelizationcodes c have different lengths due to their different spreading factorsSF, N periods of the respective channelization codes c are concatenated(step 101) to form a periodic long code c _(p), equal in length to themaximum spreading factor SF_(max) of the communication system.Concatenation is not required when N is equal to one (SF=SF_(max)).

In order to simplify the explanation of the method 97, c represents theproduct of all real channelization codes that have been concatenated c_(p). Included in c are the real codes from which the complexchannelization codes are derived. The n^(th) element of c is defined as:c[n]=c ₁ [n]·c ₂ [n] . . . c _(M) [n], where n=1, . . . SF.   (8)Additionally, v represents the product of all real scrambling codes.Included in υ are the real codes from which the complex scrambling codesare derived. The n^(th) element of v is defined as:v[n]=v ₁ [n]·v ₂ [n] . . . v _(P) [n], where n=1, . . . SF _(max).   (9)

An intermediate real code s is computed (step 103) from eachconcatenated channelization code sequence c _(p) and the real scramblingcode v by performing an element-by-element multiplication of the twovectors in the intermediate code s generator 21. Multiplication isallowed since both vectors are of the same length. The n^(th) element ofthe intermediate code s is defined by:s [n]=c_(p) [n]·v[n], where n=1, . . . SF _(max)  (10)where c_(p) , is a product of the periodic extensions of the subchannelk channelization codes c, containing N periods of c corresponding to thespreading factor SF. Intermediate real code s of length SF_(max) iscomputed (step 103) using v and c and is made up of M+P real codes.

The intermediate code s is computed once for a given (k^(th))subchannel. Efficiency is gained since the computation is performed oncefor the entire data sequence for transmission of subchannel k. Group Ncount (step 105) is initialized and a vector d comprising N symbols isassembled (step 107) in the group N processor 19. Symbol d_(i) count isinitialized (step 109).

The spreader 17 improves processing speed by recognizing that thegeneration of each subsequence z _(i) (Equation 5) involves the complexsequence j^(SF(i−1)+n) where n=1, . . . SF. This sequence arises sinceeach complex code {tilde over (c)}, {tilde over (v)} is derived from areal scrambling code c, v via multiplication with the complex sequencej^(n) (Equation 4). Referring to Equation 5 and using the commutativeproperty of multiplication, the product of the real channelization codesc _(p) and the real scrambling codes v are available via theintermediate code s (step 103). Equation 5 representing the n^(th)element of z_(i), (where z _(i) is the segment of SF chips within z thatrepresents the contribution of subchannel k's i^(th) spread symbol,d_(i) in the group), becomes:z _(i) [n]=d _(i) ·c[n]·v[SF(i−1)+n]·j ^(P) ¹ ^(SF(i−1)) ·j ^((P) ¹^(+M) ¹ ^()n) where n=1 . . . SF and i=1, 2, . . . N.   (11)

To complete the spreading process for a group, a multiplication of theintermediate code s with a concatenation of all symbols in the group isrequired. The spreader 17 of the present invention obviates a pluralityof multiplications by recognizing that each multiplication with thecomplex operator j is equivalent to an anticlockwise rotation of themultiplicand that varies in the number of degrees. The rotation involvesan exchange of the real and imaginary parts with a change of sign. Then^(th) element of {tilde over (d)} _(i) is obtained from amultiplication of its (n−1)^(th) element with the complex operatorj^((P) ¹ ^(+M) ¹ ⁾ and is defined as:{tilde over (d)} _(i) [n]=j ^((P) ¹ ^(+M) ¹ ⁾ {tilde over (d)} _(i)[n−1], where n=1, . . . SF   (12)where the 0^(th) element of {tilde over (d)} _(i) is initialized as:{tilde over (d)} _(i)[0]=d _(i) j ^(SF(i−1)P) ¹   (13)Equation 13 initializes {tilde over (d)}_(i)[0] by imparting an initialphase d_(i), which is a function of the spreading factor SF, theposition i within the group of the symbols being spread and the numberof complex scrambling codes P₁. Step 111 performs the first step of thisinitialization.

Invoking the equivalence between a multiplication with a complexoperator j and an anticlockwise rotation of the multiplicand by 90degrees, the real and imaginary components of the n^(th) element of{tilde over (d)}_(i) are derived from the imaginary and real components,respectively, of its (n−1)^(th) element. Since a group of N symbols isspread with N periods of the subchannel k spreading factor SFchannelization codes c, i takes the value from i=1, . . . N.

After a symbol count i is initialized (step 109), a group of N symbolsis processed and d_(i)[0] is initialized (step 111). When the spreadingfactor SF satisfies the following:SF·P ₁=4q, for any integer p,   (14)Equation 12 reduces to {tilde over (d)}_(i)[0]=d_(i) since j^(4q)=1 forany integer q. For the case when SF does not satisfy the condition ofEquation 14 (step 113), {tilde over (d)}_(i)[0] is obtained by impartingan initial phase of {tilde over (d)}_(i)[0]=j^(SF(i−1)P) ¹ {tilde over(d)}_(i)[0] to the symbol d_(i) (step 115).

The method 97 proceeds with four tests to determine the amount of symbolrotation required depending upon the number of complex spreading codesin use. For the case when M₁+P₁=4p (step 117), where p is any integer,the real and imaginary components of the n^(th) element of {tilde over(d)}_(i) are derived from the real and imaginary components with thecomplex operator being j^((P) ¹ ^(+M) ¹ ⁾=1, and its (n−1)^(th) elementsas shown by Equations 15 and 16 in step 119. The rotator 25 rotates the(n−1)^(th) element of {tilde over (d)}_(i) by 0 degrees to obtain itsn^(th) element.

For the case when M₁+P₁=4p+1 (step 121), where p is any integer, thereal and imaginary parts of the n^(th) element of {tilde over (d)}_(i)are derived from the imaginary and real parts with the complex operatorbeing j^((P) ¹ ^(+M) ¹ ⁾=j, and its (n−1)^(th) elements as shown byEquations 17 and 18 in step 123. The rotator 25 rotates the (n−1)^(th)element of {tilde over (d)}_(i) by 90 degrees anti-clockwise to obtainits n^(th) element.

For the case when M₁+P₁=4p+2 (step 125), where p is any integer, thereal and imaginary parts of the n^(th) element of {tilde over (d)}_(i)are derived from the real and imaginary components with the complexoperator being j^((P) ¹ ^(+M) ¹ ⁾=−1, and its (n−1)^(th) element asshown by Equations 19 and 20 in step 127. The rotator 25 rotates the(n−1)^(th) element of d _(i) by 180 degrees anti-clockwise to obtain itsn^(th) element.

For the remaining case when M₁+P₁=4p+3 (step 129), where p is anyinteger, the real and imaginary parts of the n^(th) element of {tildeover (d)}_(i) are derived from the real and imaginary components withthe complex operator being j^((P) ¹ ^(+M) ¹ ⁾=−j′ and its (n−1)^(th)element as shown by Equations 21 and 22 in step 131. The rotator 25rotates the (n−1)^(th) element of {tilde over (d)}_(i) by 270 degreesanti-clockwise to obtain its n^(th) element.

The resultant SF chip long intermediate chip sequence {tilde over(d)}_(i) is computed for the i^(th) symbol in the group of N symbols byemploying SF rotations as described by Equations 15-22. Actualmultiplication is replaced by the rotator 25 performing shift operationsshown in FIGS. 7 a-d that correspond to the aforementioned 0 degrees, 90degrees, 180 degrees and 270 degrees rotations respectively to computethe SF chip long vector {tilde over (d)}₁.

As shown in the FIGS. 7 a-d, at the i^(th) symbol interval, the 0^(th)element of {tilde over (d)}_(i) is initialized from the new complex datasymbol d _(i) per Equation 13. If the determined amount of symbolrotation is 90 degrees, 180 degrees or 270 degrees, the real andimaginary components of {tilde over (d)}_(i)[0] are loaded into aregister holding the real {tilde over (d)}_(i, real)[n] and imaginary{tilde over (d)}_(i, imag)[n] components of {tilde over (d)}_(i)[n]. Thereal and imaginary components of {tilde over (d)}_(i)[n] are shiftedaround in the register at the chip rate. The register has two memoryelements, which together with a feedback path accomplish the derivationof the real and imaginary components of the n^(th) element of {tildeover (d)}_(i) from the imaginary and real components, respectively, ofits (n−1)^(th) element, (Equations 17-22). The multiplication with −1accounts for required sign changes. Rotator 25 outputs z_(real),z_(imag) tapped at the n^(th) chip interval as {tilde over(d)}_(i, real)[n] and {tilde over (d)}_(i, imag)[n]. Thus, the rotatoroutputs over n=1, . . . SF chip intervals to represent the SF chip longvector {tilde over (d)}_(i), i.e., the product of the data symbol {tildeover (d)}_(i) with the j^(SF(i−1)+n), n=1, . . . SF.

As one skilled in the art should realize, a phase rotation of 0 degreeson the complex plane (FIG. 2) implemented by the rotator 25 shown inFIG. 7 a outputs the same real {tilde over (d)}_(i, real)[n] andimaginary {tilde over (d)}_(i, imag)[n] component values of the datasymbol input. The symbol does not undergo any phase change. A phaserotation of 90 degrees implemented by the rotator 25 shown in FIG. 7 boutputs as the imaginary symbol component {tilde over (d)}_(i, imag)[n]the real data symbol component input and outputs as the real symbolcomponent {tilde over (d)}_(i, real)[n] the imaginary symbol componentinput along with a change of sign. A phase rotation of 180 degreesimplemented by the rotator 25 shown in FIG. 7 c outputs as the imaginarysymbol component {tilde over (d)}_(i, imag)[n] the imaginary data symbolcomponent input along with a change of sign and outputs as the realsymbol component {tilde over (d)}_(i, real)[n] the real symbol componentinput along with a change of sign. A phase rotation of 270 degreesimplemented by the rotator 25 in FIG. 7 d outputs as the imaginarysymbol component {tilde over (d)}_(i, imag)[n] the imaginary data symbolcomponent input, and outputs as the real symbol component {tilde over(d)}_(i, real)[n] the real symbol component input along with a change ofsign.

Referring to FIG. 6 d, after all remaining symbols in the group aresimilarly processed (step 133), their {tilde over (d)}_(i), i=1, . . . Nare concatenated to form SF_(max) long {tilde over (d)}_(i) and thenmultiplied by the intermediate code s to arrive at the final spreadsequence z of the group (step 135). The process is repeated forremaining groups (step 137) and the group index is incremented (step139) if needed.

Alternative embodiments of spreader 17 may be realized when a specificnumber of codes are used and do not vary. For example, if the spreader17 was deployed in transmitters for a communication system that onlyrequired two codes for separation, one real and one complex, the totalnumber of complex codes equals one, satisfying the test M₁+P₁=4p+1(j^((number of complex codes)modulo 4)) (step 121) thereby requiringonly a 90 degree rotation. The remaining tests for 0, 180 and 270 degreerotations (steps 117, 125, 129) and their associated rotations (steps119, 127 and 131) are obviated. Any number of codes may be combined tospread the data assembled in the group N processor 19.

While the present invention has been described in terms of the preferredembodiments, other variations which are within the scope of theinvention as outlined in the claims below will be apparent to thoseskilled in the art.

1. A method for spreading a sequence of symbols using at least twospreading codes in a wireless communication system where the firstspreading code is used for distinguishing users and the second spreadingcode is used for distinguishing base stations, the method comprising:generating a single symbol spreading code from the at least twospreading codes; generating a complex code sequence from the sequence ofsymbols; and, generating a spread sequence by multiplying the symbolspreading code and the complex code sequence bit by bit.
 2. The methodof claim 1, further comprising: defining a plurality of groups, eachgroup comprising N symbols, wherein spreading is conducted group bygroup.
 3. The method of claim 2, wherein the step of generating thesymbol spreading code comprises multiplying the first spreading code andthe second spreading code bit by bit.
 4. The method of claim 3, whereinthe first spreading code is concatenated N times.
 5. The method of claim4, wherein the number N is determined by dividing the maximum spreadingfactor (SF) of the system by the SF of the first code.
 6. The method ofclaim 1, wherein the complex code sequence is generated by adjusting aphase of the symbols, and rotating each phase-adjusted symbol SF timesin the complex plane.
 7. The method of claim 6, wherein each rotation isdetermined by an integer multiple of 90 degrees counterclockwise, theinteger being calculated by maximum SF modulo
 4. 8. A sequence spreaderfor spreading a sequence of symbols using at least two spreading codesfor transmission in a wireless communication system; where the firstspreading code is used for distinguishing users and the second spreadingcode is used for distinguishing base stations, the spreader comprising:a code generator for generating a spread code from the at least twospreading codes; a complex code sequence generator for generating acomplex code sequence from the spread code; and two multipliers forgenerating a final spread code by multiplying the spread code and thecomplex code sequence bit by bit.
 9. The sequence spreader of claim 8,wherein the spread code comprises a plurality of groups of N symbols.10. The sequence spreader of claim 9, wherein the code generatorgenerates the spreading code by multiplying the first spreading code andthe second spreading code bit by bit.
 11. The sequence spreader of claim10, wherein the first spreading code is concatenated N times.
 12. Thesequence spreader of claim 11, wherein the number N is determined bydividing the maximum spreading factor (SF) of the system by the SF ofthe first code.
 13. The sequence spreader of claim 12, wherein thecomplex code sequence generator further comprises: a phase adjuster foradjusting a phase of a symbol; and a rotator for rotating eachphase-adjusted symbol SF times in the complex plane.
 14. The sequencespreader of claim 13, wherein each rotation is determined by an integermultiple of 90 degrees counterclockwise, the integer being calculated bymaximum SF modulo 4.